package com.puccampinas.finalproject.core.persistence.abstracts;

import java.util.List;

import com.puccampinas.finalproject.core.persistence.dao.sqlserver.MySQLActivitiesDAO;
import com.puccampinas.finalproject.core.persistence.entity.Activity;
import com.puccampinas.finalproject.core.persistence.entity.Partner;
import com.puccampinas.finalproject.core.persistence.entity.Step;

public abstract class ActivitiesDAO extends AbstractDAO<Activity> {
	
	protected static ActivitiesDAO instance;
	
	public static synchronized ActivitiesDAO getDAO() {
		if (instance == null) {
			instance = new MySQLActivitiesDAO();
		}

		return instance;
		
	}
	
	public abstract Activity find(final Partner partner);
	public abstract List<Activity> findAll();
	public abstract List<Activity> findAll(Long partnerId);
	public abstract List<Activity> getEvents();
	public abstract List<Activity> getCampaigns();
	public abstract List<Activity> getContests();
	public abstract List<Activity> getSortitions();
	public abstract List<Step> getSteps(Long atividadeId);
	public abstract Activity find(Long atividadeId);
	public abstract Boolean participar(Long userId, Long atividadeId);
	public abstract Boolean desistir(Long userId, Long atividadeId);
	public abstract Boolean participa(Long userId, Long atividadeId);
}
